// fn main() {
//     let s = String::from("hello");
//     /*
//     这两个冒号（::）是运算符，
//     允许将特定的 from 函数置于 String 类型的命名空间（namespace）下，
//     而不需要使用类似 string_from 这样的名字。
//     */
//     println!("{}",s);
// }


// fn main() {
//     let mut s = String::from("hello");
//     s.push_str(", world~");//在push_str() 在字符串后追加字面值

//     println!("{}",s);
//     //hello, world~
// }


// fn main() 
// {
//     let s = String::from("hello"); // 从此处起，s 是有效的

//     // 使用 s
// }                                  // 此作用域已结束，
//                                    // s 不再有效

// fn main() {
//     let x = 5;
//     let y = x;
//     println!("x={},y={}",x,y);
//     // x=5,y=5
// }

// fn main() {
//     let s1 = String::from("hello");
//     let s2 = s1;
//     // println!("s1:{}",s1);
//     println!("s2:{}",s2);
// }


// fn main() {
//     let s1=String::from("克隆");
//     let s2=s1.clone();
//     println!("s1:{} \ns2:{}",s1,s2);
//     // s1:克隆 
//     // s2:克隆
// }

// fn main() {
//     let x = 5;
//     let mut y =x;
//     y+=1;
//     println!("x={},y={}",x,y);
//     // x=5,y=6
// }

fn main() {
    let s1 = String::from("hello ");

    let (s2,len) = calculate_length(s1);

    println!("The length of '{}' is {}",s2,len);
    println!("s1:{}",s2);
    // The length of 'hello ' is 6
}

fn calculate_length(s:String)->(String,usize){
    let length = s.len();//len()返回字符串的长度
    (s,length)
}


